步驟 1: 建立礦物方塊
首先,我們需要建立紅寶石礦的方塊類別:
java
// RubyOreBlock.java
public class RubyOreBlock extends Block {
public RubyOreBlock() {
super(Properties.of()
.mapColor(MapColor.STONE)
.requiresCorrectToolForDrops()
.strength(3.0F, 3.0F)
.sound(SoundType.STONE));
}
@Override
public int getExpDrop(BlockState state, LevelReader level, RandomSource random, BlockPos pos, int fortuneLevel, int silkTouchLevel) {
return silkTouchLevel == 0 ? 1 + random.nextInt(5) : 0;
}
}
步驟 2: 註冊方塊與物品
在模組的主類別或專門的註冊類別中註冊我們的礦物:
java
// ModBlocks.java
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(ForgeRegistries.BLOCKS, "rubymod");
public static final RegistryObject<Block> RUBY_ORE = BLOCKS.register("ruby_ore",
RubyOreBlock::new);
}
// ModItems.java
public class ModItems {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(ForgeRegistries.ITEMS, "rubymod");
public static final RegistryObject<Item> RUBY_ORE_ITEM = ITEMS.register("ruby_ore",
() -> new BlockItem(ModBlocks.RUBY_ORE.get(), new Item.Properties()));
}
步驟 3: 建立世界生成配置檔案
在 src/main/resources/data/rubymod/worldgen/configured_feature/ 目錄下建立 ruby_ore.json:
json
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 8,
"targets": [
{
"state": {
"Name": "rubymod:ruby_ore"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:stone"
}
}
]
}
}
參數解析
type: 使用原版的礦石生成器
discard_chance_on_air_exposure: 暴露在空氣中的丟棄機率(0.0 = 永不丟棄)
size: 礦脈大小(8 與鑽石相同)
targets: 定義生成在哪些方塊上
明日預告
明天我們將繼續配置礦物的放置規則和生物群系修改器,讓紅寶石礦真正在世界中生成!